home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / netprog.zip / NETPROG.TAR / record / main2.c < prev    next >
C/C++ Source or Header  |  1989-12-17  |  652b  |  34 lines

  1. /*
  2.  * Recording process, second try: now use pseudo-terminals.
  3.  */
  4.  
  5. main(argc, argv, envp)
  6. int    argc;
  7. char    **argv;
  8. char    **envp;
  9. {
  10.     int    master_fd, slave_fd, childpid;
  11.  
  12.     if (!isatty(0) || !isatty(1))
  13.         err_quit("stdin and stdout must be a terminal");
  14.  
  15.     master_fd = pty_master();
  16.     if (master_fd < 0)
  17.         err_sys("can't open master pty");
  18.  
  19.     if ( (childpid = fork()) < 0)
  20.         err_sys("can't fork");
  21.     else if (childpid == 0) {    /* child process */
  22.         slave_fd = pty_slave(master_fd);
  23.         if (slave_fd < 0)
  24.             err_sys("can't open pty slave");
  25.         close(master_fd);
  26.  
  27.         exec_shell(slave_fd, argv, envp);
  28.             /* NOTREACHED */
  29.     }
  30.  
  31.     pass_all(master_fd, childpid);
  32.     exit(0);
  33. }
  34.